/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.distrimas.senta.dominio.compras.proveedores;

import com.distrimas.senta.dominio.contabilidad.nomina.EmpleadoDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import com.distrimas.senta.servicios.conexion.Conexion;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author Administrador
 */
public class ProveedorDAO {
    private static ProveedorDAO dao;
    //private FacadeContabilidad facadeCont=new FacadeContabilidad();
    private EmpleadoDAO auxiliar = EmpleadoDAO.getEmpleadoDAO();
    public static ProveedorDAO getProveedorDAO(){
        if(dao==null){
            dao=new ProveedorDAO();
        }
        return dao;
    }

    public boolean ingresarProveedor(ProveedorDTO proveedor){
    boolean resultado=true;
    Connection cone=null;
    try {
        cone=Conexion.getConnection();
        PreparedStatement p = cone.prepareStatement(ProveedorDAOHelper.ingresarProveedor());
        p.setString(1, proveedor.getNit());
        p.setString(2, proveedor.getRazonSocial());
        p.setString(3, proveedor.getContacto());
        p.setString(4, proveedor.getTelefono());
        p.setString(5, proveedor.getMail());
        p.setString(6, proveedor.getDireccion());
        p.setFloat(7, proveedor.getCreditoBase());
        p.setFloat(8, proveedor.getCreditoDisponible());
        //p.setString(9, proveedor.getAuxiliarencargado().getId());
        p.setFloat(9, proveedor.getCalificacion());
        p.setString(10, proveedor.getDivisa());
        p.execute();
    } catch (Exception e) {
            e.printStackTrace();
            resultado = false;
    }finally{
        try {
            Conexion.returnConnection(cone);
        } catch (Exception e) {
        }
    }
    return resultado;
}


public boolean actualizarProveedor (ProveedorDTO e){
    boolean result = true;
    Connection con=null;
    try{
        con= Conexion.getConnection();
        PreparedStatement p= con.prepareStatement (ProveedorDAOHelper.actualizarProveedor());
        p.setString(1, e.getNit());
        p.setString(2, e.getRazonSocial());
        p.setString(3, e.getContacto());
        p.setString(4, e.getTelefono());
        p.setString(5, e.getMail());
        p.setString(6, e.getDireccion());
        p.setFloat(7, e.getCreditoBase());
        p.setFloat(8, e.getCreditoDisponible());
        p.setString(9, e.getAuxiliarencargado().getId());
        p.setString(10, e.getDivisa());
        p.setFloat(11, e.getCalificacion());
        p.execute();
    }
    catch (Exception ex){
        ex.printStackTrace();
        result=false;
    }
    finally{
        try{
            Conexion.returnConnection(con);
        }
        catch (Exception clo){
        }
    }
    return result;
}

public ProveedorDTO consultarProveedor(String s) {
    ProveedorDTO result = new ProveedorDTO();
    Connection con=null;
    try{
        con= Conexion.getConnection();
        PreparedStatement p= con.prepareStatement (ProveedorDAOHelper.consultarProveedor());
        p.setString(1, s);
        ResultSet r= p.executeQuery();
        while(r.next()){
            result.setNit(r.getString(1));
            result.setRazonSocial(r.getString(2));
            result.setContacto(r.getString(3));
            result.setTelefono(r.getString(4));
            result.setMail(r.getString(5));
            result.setDireccion(r.getString(6));
            result.setCreditoBase(r.getFloat(7));
            result.setCreditoDisponible(r.getFloat(8));
           // result.setAuxiliarencargado(facadeCont.getEmpleado(r.getString(9)));//este es el que debe quedar
            result.setAuxiliarencargado(auxiliar.consultarEmpleado(r.getString(9)));//para que funcione
            result.setCalificacion(r.getFloat(10));
            result.setDivisa(r.getString(11));
        }
} catch (Exception ex){
        ex.printStackTrace();
    }
    finally{
        try{
            Conexion.returnConnection(con);
        }
        catch (Exception clo){
        }
    }
    return result;
}

public boolean actualizarCalificacion (ProveedorDTO e){
    boolean result = true;
    Connection con=null;
    try{
        con= Conexion.getConnection();
        PreparedStatement p= con.prepareStatement (ProveedorDAOHelper.ActualizarEvaluacion());
        p.setString(1, e.getNit());
        p.setString(2, e.getRazonSocial());
        p.setString(3, e.getContacto());
        p.setString(4, e.getTelefono());
        p.setString(5, e.getMail());
        p.setString(6, e.getDireccion());
        p.setFloat(7, e.getCreditoBase());
        p.setFloat(8, e.getCreditoDisponible());
        p.setString(9, e.getAuxiliarencargado().getId());
        p.setString(10, e.getDivisa());
        p.setFloat(11, e.getCalificacion());//dato concreto a actualizar
        p.execute();
    }
    catch (Exception ex){
        ex.printStackTrace();
        result=false;
    }
    finally{
        try{
            Conexion.returnConnection(con);
        }
        catch (Exception clo){
        }
    }
    return result;
}




}
